package cn.edu.cqupt.cxcy.dao;

import java.util.List;

import cn.edu.cqupt.cxcy.model.Field;
import cn.edu.cqupt.cxcy.model.Investor;
import cn.edu.cqupt.cxcy.model.Notice;
import cn.edu.cqupt.cxcy.model.Noticetype;
import cn.edu.cqupt.cxcy.model.Team;
import cn.edu.cqupt.cxcy.model.Tutor;

/**
 *  主页专用
 * @author Dancer-mno
 * @date 2015年10月12日
 */
public interface IndexDao {
	/**
	 * 主页 投资人的分页，每页多少数目
	 */
	public static final int PAGING_INVE = 5;
	/**
	 * 主页 项目的分页，每页多少数目
	 */
	public static final int PAGING_PROS = 9;
	/**
	 * 主页  团队的分页，每页多少数目
	 */
	public static final int PAGING_TEAM = 9;
	/**
	 * 主页 新闻公告的分页，每页多少数目
	 */
	public static final int PAGING_NEWS = 12;
	/**
	 * 主页 新闻导师的分页，每页多少数目
	 */
	public static final int PAGING_TEAC = 12;
	/**
	 * 主页 新闻导师的分页，每页多少数目
	 */
	public static final int PAGING_CDYY = 5;
	
	/**
	 * indexPage的最新项目列表个数
	 */
	public static final int INDEX_NEWPRO= 4;
	/**
	 * indexPage的最新成功的项目列表个数
	 */
	public static final int INDEX_NEWSUCCPRO= 8;
	
	/**
	 * indexPage的最新新闻列表个数
	 */
	public static final int INDEX_NEWNEW= 10;
	/**
	 * 登录检查
	 * @author Dancer-mno
	 * @param list [0]:登录用户名,[1]:  密码(已用Md5加密)
	 * @return SUCCESS:[0]:昵称,[1]:返回id,[2]:返回用户类型,[3]:logo地址; [4]:用户登陆名;FAIL:null<br />
	 * 管理员类型为:1,指导教师为:2,投资人为:3,团队为:4;
	 */
	public List<Object> login(List<Object> list);
	
	/**
	 * 得到团队 教师 投资人 项目的条目
	 * @return [0]:团队,[1]:导师,[2]:投资人,[3]:项目,[4]:融资额,都为int类型
	 */
	public List<Integer> getCountNess();
	
	/**
	 * 获取最新的创业项目 列表(4条数据  pi.p_progress=0)
	 * @return 最外围list包含几个list<br />
	 * 容器内的list依次包含对象Project(项目)、 Projectinvest(项目与投资人关系)、 Investor(投资人)、 Team(团队)、 Tutor(导师);<br />
	 * 还是用list.get(indexOf)取
	 */
	public List<Object> getNewProList();
	
	/**
	 * 获取成功的创业项目 列表(八条数据  pi.p_progress=10)
	 * @return 最外围list包含几个list<br />
	 * 容器内的list依次包含对象Project(项目)、 Projectinvest(项目与投资人关系)、 Investor(投资人)、 Team(团队)、 Tutor(导师);<br />
	 * 还是用list.get(indexOf)取
	 */
	public List<Object> getNewSuccessProList();
	
	/**
	 * 单个项目的详细资料
	 * @param proid 项目主键ID
	 * @return 
	 * 容器内的list依次包含对象Project(项目)、 Projectinvest(项目与投资人关系)、 Investor(投资人)、 Team(团队)、 Tutor(导师);<br />
	 */
	public List<Object> getProInfo(int proid);
	
	/**
	 * 获取最新的新闻公告
	 * @return list包含一个list2, list2包含Notice、NoticeType对象
	 */
	public Notice getNewNoticeHaveImg();
	
	public List<Object> getNewNoticeList(int id, int ntid);
	public List<Object> getNewNoticeList();
	/**
	 * 
	 * @param nid 公告的主键ID
	 * @return list包含Notice、NoticeType对象
	 */
	public List<Object> getNoticeInfo(int nid);
	
	/**
	 * 添加浏览项目的次数p_view
	 * @param proid
	 */
	public void addProView(int proid);
	
	/**
	 * 添加公告浏览的次数
	 * @param newsid
	 */
	public void addNewsView(int newsid);
	
	/**
	 * 判断用户名是否唯一
	 * @param username 用户名
	 * @return 存在就返回false，不存在就返回true
	 */
	public boolean usernameIsUnique(String username);
	
	/**
	 * 找回密码用,将验证码保存起来
	 * @param type 用户类型
	 * @param loname 用户登陆邮箱
	 * @param check 验证码
	 * @return
	 */
	public boolean updateCheck( String loname, String check);
	
	/**
	 * 查看当前用户的场地申请情况
	 * @param loname
	 * @return
	 */
	public List<Object> listCdyy(String loname, int page, int count);
	
	public int countCdyy(String loname);
	
	public List<Team> teamList();
	
	/**
	 * 添加场地预约
	 * @param field
	 * @return 成功就返回true
	 */
	public boolean addCdyy(Field field);
	
	public boolean addProZan( int pid);
	
	/**
	 * 导师的列表
	 * @param type 导师的类别 0:未分配;1:校内导师;2:校外导师
	 * @param page 当前页
	 * @param count 每页多少数据
	 * @return
	 */
	public List<Object> listTeac( int type, int page, int count);
	
	/**
	 * 导师列表的总条数
	 * @param type
	 * @return
	 */
	public int countTeac(int type);
	
	/**
	 * 投资人的列表
	 * @param type 
	 * @param page 
	 * @param count 
	 * @return
	 */
	public List<Object> listInve(int type, int page, int count);
	
	public int countInve(int type);
	
	/**
	 * 团队列表
	 * @param page
	 * @param count
	 * @return
	 */
	public List<Object> listTeam( int page, int count);
	
	public int countTeam();
	
	/**
	 * 项目列表
	 * @param page
	 * @param count
	 * @return
	 */
	public List<Object> listPros(int type, int page, int count);
	
	public int countPros(int type);
	
	/**
	 * 公告列表
	 * @param page
	 * @param count
	 * @return
	 */
	public List<Object> listNews(int type, int page, int count);
	
	public int countNews(int type);
	
	public List<Noticetype> noticeTypes();
	
	
	/**
	 * ajax 得到info
	 */
	public Investor invenfo(int id);
	public List<Object> invePro(int id);
	public List<Object> proInfo(int id);
	public Team teamInfo(int id);
	public List<Object> memberInfo(int tid);
	public List<Object> tutorInfo(int id);
	public List<Object> tutorTeam(int id);
	public List<Object> newsInfo(int id);
	
	/**
	 * 添加
	 */
	public boolean addTeam(Team team);
	public boolean addTeac(Tutor teac);
	
	
}
